<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//Ultima verificacion: 23-11-2014 ; 28-02-2015
class Mensaje extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todos los mensajes recibidos pero NO los borrados por el destinatario
	function entrada(){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion. Todos los usuarios pueden recibir y enviar mensajes por lo que no se necesitan permisos extra.
		if($this->session->userdata('sesionIniciada') == 'Si'){
			//Segunda comprobacion: Que idPersonaLog guardado en la sesion sea numerico y mayor que cero. 
			if(is_numeric($this->session->userdata('idPersonaLog')) && $this->session->userdata('idPersonaLog')>0){
				//Cargo el modelo donde estan los datos de las personas
				$this->load->model('m_persona');
				
				//Busco a la persona para corroborar que exista
				$persona = $this->m_persona->get($this->session->userdata('idPersonaLog'));
				
				//Tercera comprobacion: Que la persona sea existente.
				if($persona->num_rows() == 1){
					//Busco solo los mensajes enviados a la persona logueada
					$restriccion = " AND mensaje.idDestinatario=".$this->session->userdata('idPersonaLog');
					
					//Busco solo los mensajes que el destinatario no ha borrado
					$restriccion .= " AND mensaje.estadoDestinatario=1";
					
					//Cargo el modelo donde estan los datos de los mensajes registrados para pedirle un listado con todos ellos segun las restricciones
					$this->load->model('m_mensaje');
					
					//Busco todos los mensajes segun las restricciones correspondientes
					$listadoMensajes = $this->m_mensaje->buscarR($restriccion);
					
					//Le paso el listado de todas los mensajes a la vista para que las muestre en una tabla
					$datos['mensajes'] = $listadoMensajes;
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
					
					//Cargo la vista donde se muestra la tabla de mensajes y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_mensajes_bandeja_entrada', $datos, true);
					
					//Cargo la vista principal con los datos de la vista recien generada
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todos los mensajes enviados pero NO los borrados por el remitente
	function salida(){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion. Todos los usuarios pueden recibir y enviar mensajes por lo que no se necesitan permisos extra.
		if($this->session->userdata('sesionIniciada') == 'Si'){
			//Segunda comprobacion: Que idPersonaLog guardado en la sesion sea numerico y mayor que cero. 
			if(is_numeric($this->session->userdata('idPersonaLog')) && $this->session->userdata('idPersonaLog')>0){
				//Cargo el modelo donde estan los datos de las personas
				$this->load->model('m_persona');
				
				//Busco a la persona para corroborar que exista
				$persona = $this->m_persona->get($this->session->userdata('idPersonaLog'));
				
				//Tercera comprobacion: Que la persona sea existente.
				if($persona->num_rows() == 1){
					//Busco solo los mensajes enviados por la persona logueada
					$restriccion = " AND mensaje.idRemitente=".$this->session->userdata('idPersonaLog');
					
					//Busco solo los mensajes que el remitente no ha borrado
					$restriccion .= " AND mensaje.estadoRemitente=1";
					
					//Cargo el modelo donde estan los datos de los mensajes registrados para pedirle un listado con todos ellos segun las restricciones
					$this->load->model('m_mensaje');
					
					//Busco todos los mensajes segun las restricciones correspondientes
					$listadoMensajes = $this->m_mensaje->buscarD($restriccion);
					
					//Le paso el listado de todas los mensajes a la vista para que las muestre en una tabla
					$datos['mensajes'] = $listadoMensajes;
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
					
					//Cargo la vista donde se muestra la tabla de mensajes y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_mensajes_bandeja_salida', $datos, true);
					
					//Cargo la vista principal con los datos de la vista recien generada
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar el mensaje pasado por la url. Tipo sirve para saber que pagina cargar.
	function eliminar($idMensaje=null, $tipo=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion.
		if($this->session->userdata('sesionIniciada') == 'Si'){
			//Segunda comprobacion: Que idMensaje pasado sea numerico y mayor que cero. Ademas que tipo pasado sea numerico y mayor que cero y menor que 3.
			if(is_numeric($idMensaje) && $idMensaje>0 && is_numeric($tipo) && $tipo>=1 && $tipo<=2){
				//Cargo el modelo donde estan los datos de los mensajes registrados
				$this->load->model('m_mensaje');
				
				//Busco al mensaje que hay que eliminar para corroborar que exista
				$mensaje = $this->m_mensaje->get($idMensaje);
				
				//Tercera comprobacion: Que el mensaje exista y sea o bien del destinatario o del remitente
				if($mensaje->num_rows() == 1 && ($mensaje->row()->idRemitente == $this->session->userdata('idPersonaLog') || $mensaje->row()->idDestinatario == $this->session->userdata('idPersonaLog'))){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					if($tipo==1){
						//Elimino al mensaje pasado por la url
						$respuesta = $this->m_mensaje->eliminarD($idMensaje, $this->session->userdata('idUsuarioLog'), 0);
						
						//Busco solo los mensajes enviados a la persona logueada
						$restriccion = " AND mensaje.idDestinatario=".$this->session->userdata('idPersonaLog');
						
						//Busco solo los mensajes que el destinatario no ha borrado
						$restriccion .= " AND mensaje.estadoDestinatario=1";
						
						//Cargo el modelo donde estan los datos de los mensajes registrados para pedirle un listado con todos ellos segun las restricciones
						$this->load->model('m_mensaje');
						
						//Busco todos los mensajes segun las restricciones correspondientes
						$listadoMensajes = $this->m_mensaje->buscarR($restriccion);
						
						//Le paso el listado de todos los mensajes a la vista para que las muestre en una tabla
						$datos['mensajes'] = $listadoMensajes;
						
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Cargo la vista donde se muestra la tabla de mensajes de la bandeja de entrada
						$this->load->view('v_mensajes_bandeja_entrada', $datos);
					}
					
					if($tipo==2){
						//Elimino al mensaje pasado por la url
						$respuesta = $this->m_mensaje->eliminarR($idMensaje, $this->session->userdata('idUsuarioLog'), 0);
						
						//Busco solo los mensajes enviados por la persona logueada
						$restriccion = " AND mensaje.idRemitente=".$this->session->userdata('idPersonaLog');
						
						//Busco solo los mensajes que el remitente no ha borrado
						$restriccion .= " AND mensaje.estadoRemitente=1";
						
						//Cargo el modelo donde estan los datos de los mensajes registrados para pedirle un listado con todos ellos segun las restricciones
						$this->load->model('m_mensaje');
						
						//Busco todos los mensajes segun las restricciones correspondientes
						$listadoMensajes = $this->m_mensaje->buscarD($restriccion);
						
						//Le paso el listado de todos los mensajes a la vista para que las muestre en una tabla
						$datos['mensajes'] = $listadoMensajes;
							
						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						//Cargo la vista donde se muestra la tabla de mensajes de la bandeja de salida
						$this->load->view('v_mensajes_bandeja_salida', $datos);
					}
				} else {
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					echo("No existe el registro seleccionado para borrar.");
				}
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro.");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Abre la pantalla con el formulario para crear un mensaje nuevo
	//Los parametros se utilizan para seleccionar una persona en el caso de responder un mensaje
	function abrirPantallaCrear($idPersona=null, $idMensajeAResponder=0){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion.
		if($this->session->userdata('sesionIniciada') == 'Si'){
			//Segunda comprobacion: Que idPersona pasado sea numerico y mayor o igual que cero. Que idMensajeAResponder sea numerico y mayor o igual que cero.
			if(is_numeric($idPersona) && $idPersona>=0 && is_numeric($idMensajeAResponder) && $idMensajeAResponder>=0){
				//Cargo el modelo donde estan los datos de las personas
				$this->load->model('m_persona');
				
				//Busco a la persona para corroborar que exista
				$persona = $this->m_persona->get($idPersona);
				
				//Cargo el modelo donde estan los datos de los mensajes
				$this->load->model('m_mensaje');
				
				//Busco al mensaje para corroborar que exista
				$mensaje = $this->m_mensaje->get($idMensajeAResponder);
				
				//Tercera comprobacion: Que la persona pasada por la url sea existente o bien el id sea igual a cero. Idem para el mensaje.
				if(($persona->num_rows() == 1 || $idPersona==0) && ($mensaje->num_rows() == 1 || $idMensajeAResponder==0)){
					//Le paso la persona seleccionada para que la seleccione en el combo
					$datos['idPersonaSel'] = $idPersona;
					
					//Verificamos si hay que colocar un asunto en el mensaje (Si es que es una respuesta)
					$datos['asuntoSel'] = "";
					if($idMensajeAResponder>0){					
						$datos['asuntoSel'] = $mensaje->row()->asunto;
					}
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Todos pueden enviar un mensaje a los directivos activos.
					$consulta = "(SELECT persona.* FROM directivo, persona WHERE directivo.idPersona=persona.idPersona AND directivo.estado=1 AND persona.estado=1)";
					
					//Directivos
					if(is_numeric($this->session->userdata('idDirectivoLog')) && $this->session->userdata('idDirectivoLog')>0){
						//Armo la restriccion para los directivos. Los directivos pueden enviar mensajes a todas las personas activas
						$consulta .= " UNION (SELECT persona.* FROM persona WHERE estado=1)";
					}
					
					//Alumnos
					if(is_numeric($this->session->userdata('idAlumnoLog')) && $this->session->userdata('idAlumnoLog')>0){
						//Armo la restriccion para los alumnos. Los alumnos pueden enviar mensajes a sus docentes, a sus compañeros, a los directivos y sus tutores.
						//Los tutores del alumno
						$consulta .= " UNION (SELECT persona.* FROM tutorxalumno, tutor, persona WHERE tutorxalumno.idTutor=tutor.idTutor AND tutor.idPersona=persona.idPersona AND tutorxalumno.estado=1 AND tutor.estado=1 AND persona.estado=1 AND tutorxalumno.idAlumno=".$this->session->userdata('idAlumnoLog').")";
						//Los compañeros historicos del alumno
						$consulta .= " UNION (SELECT persona.* FROM alumnoxdivision, alumno, persona WHERE alumnoxdivision.idAlumno=alumno.idAlumno AND alumno.idPersona=persona.idPersona AND alumnoxdivision.estado=1 AND alumno.estado=1 AND persona.estado=1 AND alumnoxdivision.idDivision IN (SELECT alumnoxdivision.idDivision FROM alumnoxdivision WHERE alumnoxdivision.estado=1 AND alumnoxdivision.idAlumno=".$this->session->userdata('idAlumnoLog')."))";
						//Los docentes historicos del alumno
						$consulta .= " UNION (SELECT persona.* FROM asignatura, docentexasignatura, docente, persona WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND docentexasignatura.idDocente=docente.idDocente AND docente.idPersona=persona.idPersona AND asignatura.estado=1 AND docentexasignatura.estado=1 AND docente.estado=1 AND persona.estado=1 AND asignatura.idDivision IN (SELECT alumnoxdivision.idDivision FROM alumnoxdivision WHERE alumnoxdivision.estado=1 AND alumnoxdivision.idAlumno=".$this->session->userdata('idAlumnoLog')."))";
					}
					
					//Docentes
					if(is_numeric($this->session->userdata('idDocenteLog')) && $this->session->userdata('idDocenteLog')>0){
						//Armo la restriccion para los docentes. Los docentes pueden enviar mensajes a los otros docentes, a sus alumnos, a los directivos y los tutores de sus alumnos.
						//Los docentes
						$consulta .= " UNION (SELECT persona.* FROM docente, persona WHERE docente.idPersona=persona.idPersona AND docente.estado=1 AND persona.estado=1)";
						//Todos sus alumnos
						$consulta .= " UNION (SELECT persona.* FROM alumnoxdivision, alumno, persona WHERE alumnoxdivision.idAlumno=alumno.idAlumno AND alumno.idPersona=persona.idPersona AND alumnoxdivision.estado=1 AND alumno.estado=1 AND persona.estado=1 AND alumnoxdivision.idDivision IN (SELECT asignatura.idDivision FROM docentexasignatura, asignatura WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND docentexasignatura.estado=1 AND asignatura.estado=1 AND docentexasignatura.idDocente=".$this->session->userdata('idDocenteLog')."))";
						//Los tutores de sus alumnos
						$consulta .= " UNION (SELECT persona.* FROM tutorxalumno, tutor, persona WHERE tutorxalumno.idTutor=tutor.idTutor AND tutor.idPersona=persona.idPersona AND tutorxalumno.estado=1 AND tutor.estado=1 AND persona.estado=1 AND tutorxalumno.idAlumno IN (SELECT alumnoxdivision.idAlumno FROM alumnoxdivision, division, asignatura, docentexasignatura WHERE alumnoxdivision.idDivision=division.idDivision AND division.idDivision=asignatura.idDivision AND asignatura.idAsignatura=docentexasignatura.idAsignatura AND alumnoxdivision.estado=1 AND division.estado=1 AND asignatura.estado=1 AND docentexasignatura.estado=1 AND docentexasignatura.idDocente=".$this->session->userdata('idDocenteLog')."))";
					}
					
					//Tutores
					if(is_numeric($this->session->userdata('idTutorLog')) && $this->session->userdata('idTutorLog')>0){
						//Armo la restriccion para los tutores. Los tutores pueden enviar mensajes a los docentes de sus hijos, a sus hijos, a los directivos y a los otros padres de los compañeros.
						//A sus Hijos
						$consulta .= " UNION (SELECT persona.* FROM tutorxalumno, alumno, persona WHERE tutorxalumno.idAlumno=alumno.idAlumno AND alumno.idPersona=persona.idPersona AND tutorxalumno.estado=1 AND alumno.estado=1 AND persona.estado=1 AND tutorxalumno.idTutor=".$this->session->userdata('idTutorLog').")";
						//Los docentes de sus hijos
						$consulta .= " UNION (SELECT persona.* FROM asignatura, docentexasignatura, docente, persona WHERE docentexasignatura.idAsignatura=asignatura.idAsignatura AND docentexasignatura.idDocente=docente.idDocente AND docente.idPersona=persona.idPersona AND asignatura.estado=1 AND docentexasignatura.estado=1 AND docente.estado=1 AND persona.estado=1 AND asignatura.idDivision IN (SELECT alumnoxdivision.idDivision FROM alumnoxdivision, alumno, tutorxalumno WHERE alumnoxdivision.idAlumno=alumno.idAlumno AND alumno.idAlumno=tutorxalumno.idAlumno AND alumnoxdivision.estado=1 AND alumno.estado=1 AND tutorxalumno.estado=1 AND tutorxalumno.idTutor=".$this->session->userdata('idTutorLog')."))";
						//A los padres de los compañeros de sus hijos
						$consulta .= " UNION (SELECT persona.* FROM alumnoxdivision, tutorxalumno, tutor, persona WHERE alumnoxdivision.idAlumno=tutorxalumno.idAlumno AND tutorxalumno.idTutor=tutor.idTutor AND tutor.idPersona=persona.idPersona AND alumnoxdivision.estado=1 AND tutorxalumno.estado=1 AND tutor.estado=1 AND persona.estado=1 AND alumnoxdivision.idDivision IN (SELECT alumnoxdivision.idDivision FROM alumnoxdivision, alumno, tutorxalumno WHERE alumnoxdivision.idAlumno=alumno.idAlumno AND alumno.idAlumno=tutorxalumno.idAlumno AND alumnoxdivision.estado=1 AND alumno.estado=1 AND tutorxalumno.estado=1 AND tutorxalumno.idTutor=".$this->session->userdata('idTutorLog')."))";
					}
					
					$consulta .= " ORDER BY apellido ASC, nombre ASC";
					
					//Busco todas las personas segun las restricciones correspondientes, tanto activos como inactivos, menos los borrados(-1)
					$listadoPersonas = $this->m_persona->consultar($consulta);
					
					//Le paso el listado de todas las personas a la vista para que las muestre en el combo
					$datos['personas'] = $listadoPersonas;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo la vista donde se muestra el formulario para crear un mensaje y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_mensajes_crear', $datos, true);
					
					//Cargo la vista principal con los datos de la vista recien generada
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El registro seleccionado no existe
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo crea realmente el mensaje. La respuesta se muestra en un iframe dentro del formulario
	function crear(){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion.
		if($this->session->userdata('sesionIniciada') == 'Si'){			
			//Como pueden ser varias personas seleccionadas, la variable debe ser un array
			$personas = $this->input->post('personas',true);
			
			//Segunda comprobacion: Que se haya pasado por post las personas, el asunto y el mensaje a crear.
			if(is_array($personas) && count($personas)>=1 && $this->input->post('asunto',true) != "" && $this->input->post('mensaje',true) != ""){		
				//Cargo el modelo donde estan los datos de los mensajes
				$this->load->model('m_mensaje');
				
				$resultado=0;
				for ($i=0;$i<count($personas);$i++){
					//Creamos los mensajes
					$resultadoParcial = $this->m_mensaje->crear($this->session->userdata('idPersonaLog'), $personas[$i], $this->input->post('asunto',true), $this->input->post('mensaje',true), $this->session->userdata('idUsuarioLog'));
					$resultado += $resultadoParcial;
					
					if($resultadoParcial == 1){
						$ultimoRegistroCreado = $this->db->insert_id();
					
						//Creamos el registro de la novedad. TipoOperacion, idTablaOrigen, idRegistroOrigen, idTablaDestino, idRegistroDestino, fechaPasada, fechaFutura, estado
						$this->m_timeline->crear(1, 9, $ultimoRegistroCreado, 25, $personas[$i], date("Y-m-d H:i:s"),null, 1);
					}
				}
				
				if($resultado == count($personas)){
					if(count($personas)==1)
						echo("<script> alert('El mensaje: ".$this->input->post('asunto',true)." se ha enviado correctamente. ".$mensaje."');</script>");
					else
						echo("<script> alert('Los ".count($personas)." mensajes: ".$this->input->post('asunto',true)." se han enviado correctamente. ".$mensaje."');</script>");
				}else{
					echo("<script> alert('El mensaje: ".$this->input->post('asunto',true)." no se ha enviado correctamente. Ha habido un error.');</script>");
				}				
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();			
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo abre la pantalla con los datos del mensaje pasado por la url
	//El segundo parametro solo se utiliza para volver a la pantalla de bandeja de entrada o de salida
	function visualizar($idMensaje=null, $tipo=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion.
		if($this->session->userdata('sesionIniciada') == 'Si'){
			//Segunda comprobacion: Que idMensaje pasado sea numerico y mayor que cero. Ademas que tipo pasado sea numerico y mayor o igual que 1 y menor o igual que dos
			if(is_numeric($idMensaje) && $idMensaje>0 && is_numeric($tipo) && $tipo>=1 && $tipo<=2){
				//Cargo el modelo donde estan los datos de los mensajes registrados
				$this->load->model('m_mensaje');
				
				//Busco al mensaje que hay que visualizar para comprobar que existe
				$mensaje = $this->m_mensaje->get($idMensaje);
				
				//Tercera comprobacion: Que el mensaje sea existente. Que el mensaje deba ser recibido o enviado por la persona logueada.
				if($mensaje->num_rows() == 1 && ($mensaje->row()->idRemitente == $this->session->userdata('idPersonaLog') || $mensaje->row()->idDestinatario == $this->session->userdata('idPersonaLog'))){
					//Le paso el mensaje a visualizar a la vista
					$datos['mensajeSel'] = $mensaje;
					
					//Le paso el tipo a la vista
					$datos['tipoSel'] = $tipo;
					
					//Modifico al mensaje para guardar que ya fue leido
					if($tipo == 1) $this->m_mensaje->modificar($idMensaje,1);
					
					//Busco al mensaje siguiente del que hay que visualizar
					$idMensajeSig = $this->m_mensaje->getContiguo($idMensaje,1, $this->session->userdata('idPersonaLog'), $tipo);
					
					//Le paso el mensaje siguiente del que hay que visualizar a la vista
					$datos['idMensajeSig'] = $idMensajeSig;
					
					//Busco al mensaje anterior del que hay que visualizar
					$idMensajeAnt = $this->m_mensaje->getContiguo($idMensaje,-1, $this->session->userdata('idPersonaLog'), $tipo);
									
					//Le paso el mensaje anterior de la que hay que visualizar a la vista
					$datos['idMensajeAnt'] = $idMensajeAnt;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////					
					//Cargo la vista donde se muestra el formulario para visualizar un mensaje y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_mensajes_visualizar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para visualizar un registro
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para visualizar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
}